using System.ComponentModel.DataAnnotations;

namespace MediPlatform.Read.Api.Models
{
    /// <summary>
    /// 订单发货请求模型
    /// </summary>
    public class ShipOrderRequest
    {
        /// <summary>
        /// 订单ID
        /// </summary>
        [Required]
        public long OrderId { get; set; }

        /// <summary>
        /// 物流公司
        /// </summary>
        [Required]
        public string LogisticsCompany { get; set; } = string.Empty;

        /// <summary>
        /// 物流单号
        /// </summary>
        [Required]
        public string TrackingNumber { get; set; } = string.Empty;
    }

    /// <summary>
    /// 确认收货请求模型
    /// </summary>
    public class ConfirmReceiptRequest
    {
        /// <summary>
        /// 订单ID
        /// </summary>
        [Required]
        public long OrderId { get; set; }
    }

    /// <summary>
    /// 物流公司信息
    /// </summary>
    public class LogisticsCompanyInfo
    {
        /// <summary>
        /// 物流公司代码
        /// </summary>
        public string Code { get; set; } = string.Empty;

        /// <summary>
        /// 物流公司名称
        /// </summary>
        public string Name { get; set; } = string.Empty;
    }

    /// <summary>
    /// 物流追踪详情响应模型
    /// </summary>
    public class LogisticsTrackingDetailResponse
    {
        /// <summary>
        /// 订单编号
        /// </summary>
        public string OrderNo { get; set; } = string.Empty;

        /// <summary>
        /// 物流公司
        /// </summary>
        public string LogisticsCompany { get; set; } = string.Empty;

        /// <summary>
        /// 物流单号
        /// </summary>
        public string TrackingNumber { get; set; } = string.Empty;

        /// <summary>
        /// 物流追踪记录
        /// </summary>
        public List<LogisticsTrackingRecord> TrackingRecords { get; set; } = new();
    }

    /// <summary>
    /// 物流追踪记录
    /// </summary>
    public class LogisticsTrackingRecord
    {
        /// <summary>
        /// 时间
        /// </summary>
        public DateTime Time { get; set; }

        /// <summary>
        /// 状态描述
        /// </summary>
        public string Status { get; set; } = string.Empty;

        /// <summary>
        /// 位置信息
        /// </summary>
        public string Location { get; set; } = string.Empty;
    }
} 